///////////////////////////////////////////////////////////////////////////
//																		 //
//	Author:		Michael Mozdzierz										 //
//	Date:		10/28/2014												 //
//	Purpose:	Defines everything that is the player, was the player or //
//				ever will be the player									 //
//																		 //
///////////////////////////////////////////////////////////////////////////

#ifndef _PLAYER_H
#define _PLAYER_H

#include "../../BaseGameComponent.h"
#include "../IAgent.h"
#include "../Human.h"

class Human;
class SoundEffect2D;

class Player : public Agent
{
	// inilitize player controls
	void InitControls(void);
	// update the players controls
	void UpdateControls(float dt);

	float scale = 1.f;

	const float move_speed;

	Human* human = nullptr;
public:
	/***********************Temporary********************************/
	SoundEffect2D* sound;
	struct
	{
		float hunger;
		float thurst;
		float exposure;

		float health;
		float healthRegen;
		float stamina;
		float staminaRegen;
	} stats;
	/****************************************************************/
	Player(Human* target);
	virtual ~Player(void);

	/////////////////////<Abstract functions>//////////////////////////////////////////
	virtual ControlableGameObject* getTarget(void) const override;

	virtual void Update(float dt) override;

	virtual void Draw(void) override;

	void setScale(float value) { human->setScale(value); }

	float getMoveSpeed(void) const { return move_speed; }

	static Player* GetInstance(void);
};

#endif